package com.stock_t.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.OrderItem;// 修改导入路径
import com.stock_t.page.PageDomain;
import com.stock_t.page.TableDataInfo;
import com.stock_t.page.TableSupport;

/**
 * 分页工具类
 * 
 * @author ruoyi
 */
public class PageUtils {
    /**
     * 设置请求分页数据
     */
    public static <T> Page<T> startPage() {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        if (com.stock_t.utils.StringUtils.isNotNull(pageNum) && com.stock_t.utils.StringUtils.isNotNull(pageSize)) {
            Page<T> page = new Page<>(pageNum, pageSize);
            // 添加排序功能
            String orderBy = pageDomain.getOrderBy();
            if (com.stock_t.utils.StringUtils.isNotEmpty(orderBy)) {
                // 解析排序字符串并设置到Page对象
                String[] orderByArr = orderBy.split(",");
                for (String order : orderByArr) {
                    String[] arr = order.trim().split(" ");
                    if (arr.length == 2) {
                        if ("asc".equalsIgnoreCase(arr[1])) {
                            page.addOrder(OrderItem.asc(arr[0]));  // 移除完整包路径
                        } else if ("desc".equalsIgnoreCase(arr[1])) {
                            page.addOrder(OrderItem.desc(arr[0]));  // 移除完整包路径
                        }
                    }
                }
            }
            return page;
        }
        return new Page<>();
    }
    
    /**
     * 封装分页结果到TableDataInfo对象
     *
     * @param page 分页数据
     * @return 分页数据对象
     */
    public static <T> TableDataInfo getDataTable(Page<T> page) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(200);
        rspData.setMsg("success");
        rspData.setRows(page.getRecords());
        rspData.setTotal(page.getTotal());
        return rspData;
    }
}